package juego.niveles.generator;

import java.util.Hashtable;
import java.util.Vector;
import javax.swing.ImageIcon;

import juego.entidades.Entidad;
import juego.entidades.PiedraIrrompible;
import juego.entidades.PiedraRompible;
import juego.entidades.Vacio;
import juego.graficos.ElementoGrafico;
import juego.powerups.Estrella;
import juego.powerups.Moneda;
import juego.powerups.PowerUp;
import juego.roles.Jugador;
import juego.roles.Malo;
import juego.roles.Rol;

public class CharacterMap {
	protected Hashtable<Character, Entidad> map;
	
	public CharacterMap()
	{
		this.map = new Hashtable<Character, Entidad>();
		loadMap();
	}
	
	protected void loadMap()
	{
		Entidad e = null;
		PowerUp p = null;
		Jugador j = null;
		Malo m = null;
		ElementoGrafico g = null;
		
		// 'X' = PiedraIrrompible
		Character X = new Character('X');
		e = new PiedraIrrompible();
		g = new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/powerups/irrompible/xbrick.gif")));
		e.setGrafico(g);
		this.map.put(X, e);
		
		// 'O' = Moneda -> Vacio con una Moneda
		Character O = new Character('O');
		p = new Moneda();
		e = new Vacio();
		e.addPremio(p);
		g = new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/powerups/moneda/coin.gif")));
		e.setGrafico(g);
		this.map.put(O, e);
		
		// 'P' = PiedraRompible
		Character P = new Character('P');
		e = new PiedraRompible();
		g = new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/powerups/rompible/brick.gif")));
		e.setGrafico(g);
		this.map.put(P, e);
		
		// 'Q' = Monedas en Piedra -> PiedraRompible con 10 Monedas;
		Character Q = new Character('Q');
		Vector<PowerUp> premios = new Vector<PowerUp>();
		for( int i = 0; i < 10; i++ ) {
			p = new Moneda();
			premios.add(p);
		}
		e = new PiedraRompible();
		e.addPremio(premios);
		g = new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/powerups/rompible/brick.gif")));
		e.setGrafico(g);
		this.map.put(Q, e);
		
		// 'E' = Estrella -> PiedraRompible con Estrella
		Character E = new Character('E');
		p = new Estrella();
		e = new PiedraRompible();
		e.addPremio(p);
		g = new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/powerups/estrella/star.gif")));
		e.setGrafico(g);
		this.map.put(E, e);
		
		// 'M' = Malo -> Vacio con un malo
		Character M = new Character('M');
		m = new Malo();
		e = new Vacio();
		e.addMalo(m);
		g = new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/malo/goomba.gif")));
		e.setGrafico(g);
		this.map.put(M, e);
		
		// 'V' = Vacio
		Character V = new Character('V');
		e = new Vacio();
		g = new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/powerups/vacio/vacio_transparente.png")));
		e.setGrafico(g);
		this.map.put(V, e);
		
		}
	
	public Entidad get( Character key )
	{
		return this.map.get(key);
	}
}
